package com.atguig.b_test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MyTestUnderGround {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, InvocationTargetException {

        //获取测试类的字节码对象-> 反射第一步
        Class<Demo> clazz = Demo.class;

        //快速生成一个Demo类的对象
        Demo demo = clazz.newInstance();

        //获取类中所有的方法对象
        Method[] methods = clazz.getDeclaredMethods();

        //遍历装方法对象的数组
        for (Method method : methods) {
            //判断方法上是否有被标记 @MyTest
            if (method.isAnnotationPresent(MyTest.class)){
                //最好开启暴力反射
                method.setAccessible(true);
                //能进来说明有这个注解 --> 此方法是需要被启动的
                method.invoke(demo);
            }
        }
    }
}
